home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 November / Macworld (1999-11).dmg / Updaters / WhiteCap 3.0.4 / WhiteCap Source.sit / WhiteCap Source / Common / General Tools / Headers / XLongList.h < prev    next >
Text File  |  1999-07-13  |  3KB  |  66 lines

  1. #ifndef _XLongList_
  2. #define _XLongList_
  3.  
  4. // by Andrew O'Meara
  5.  
  6. #include "XPtrList.h"
  7.  
  8.  
  9. class XLongList {
  10.     
  11.     friend class XLongList;
  12.  
  13.     public:
  14.                                 XLongList( ListOrderingT inOrdering = cOrderNotImportant );        // See XPtrList.h for ListOrderingT choices
  15.                                 
  16.         // See XPtrList.h for description of functions.
  17.         inline long                Add( long inNum )                                { return mList.Add( (void*) inNum );                }
  18.         inline void                Add( const XLongList& inList )                    { mList.Add( inList.mList );                        }
  19.         inline bool                Remove( long inNum )                            { return mList.Remove( (void*) inNum );                }
  20.         inline bool                RemoveElement( long inIndex )                    { return mList.RemoveElement( inIndex );            }
  21.         inline void                RemoveAll()                                        { mList.RemoveAll();                                 }
  22.         inline long                Fetch( long inIndex )                            { return (long) mList.Fetch( inIndex );                }
  23.         inline bool                Fetch( long inIndex, long* ioPtrDest ) const    { return mList.Fetch( inIndex, (void**)ioPtrDest );    }
  24.         inline long                FindIndexOf( const long inMatch ) const            { return mList.FindIndexOf( (void*) inMatch );        }
  25.         inline long                Count()    const                                    { return mList.Count();                                }
  26.  
  27.         void                    Randomize()                                        { mList.Randomize();                                }
  28.     
  29.         //    Post:    Any nums in this list that are in the interval [ inStart, inEnd ] are removed.
  30.         //    Note:    Note how the interval is inclusive.
  31.         void                    SubtractRange( long inStart, long inEnd );
  32.         
  33.         //    Post:    Any nums in this list that are not in the interval [ inStart, inEnd ] are removed.
  34.         //    Note:    Note how the interval is inclusive.
  35.         void                    ApplyMask( long inStart, long inEnd );
  36.     
  37.         //     Allows easy dynamic array usage.  Simply use any index and XLongList will expand to meet that size.
  38.         //    Impt:    Zero based indexing is used here!! (In contrast to Fetch())
  39.         //    Note:    Elements that are newly accessed are initialized to 0
  40.         //    Note:    Indexs below 0 lead to sDummy;
  41.         //    Note:    Since caller has access to changes values, any current sorting fcn is not used
  42.         long&                    operator[] ( const long inIndex );            
  43.  
  44.  
  45.         //    Post: Ranks all the values in this list.
  46.         //    Post: Fetch( outRank[ i ] ) is the ith largest value in this list.
  47.         //    Post: outRank.Count() == inNumToRank  (ie, only inNumToRank values of the ranking are returned)
  48.         //    Note: If inNumToRank is invalid, the full ranking is returned
  49.         //    Note: O( N log N ) running time
  50.         void                    Rank( XLongList& outRank, long inNumToRank = -1 ) const;
  51.  
  52.         
  53.     protected:
  54.         static int                sLongComparitor( const void* inA, const void* inB );
  55.         static int                sQSLongComparitor( const void* inA, const void* inB );
  56.  
  57.         XPtrList                mList;
  58.         
  59.         static long                sDummy;
  60.         
  61. };
  62.  
  63.  
  64.  
  65.  
  66. #endif